package sword2offer;

/**
 * <p>
 * 最大子数组和
 * </p>
 * 给你一个整数数组 nums ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
 * @author LovelyBigDuck
 * @date 2022/3/26 23:22
 */
public class SS_53 {
    class Solution {
        public int maxSubArray(int[] nums) {
            // pre=f(i-1)
            int pre = 0, maxAns = nums[0];
            for (int num : nums) {
                pre = Math.max(pre + num, num);
                // maxAns:当前位置的最大数组和
                maxAns = Math.max(maxAns, pre);
            }
            return maxAns;
        }
    }
}